import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*	1. Điểm hoặc là 8.75 hoặc là 7.5 ;) xem todo
*/

public class Problem19_CoutingSunday {
	// À ngon :v :v
	// Cách viết khá chắc :3 :3
	// Lại nhớ return year % 400 ? true : (year %4); :v :v 1 line
	public static boolean isLeapYear(final int year) {
		if (year % 400 == 0) {
			return true;
		} else if (year % 4 == 0) {
			return true;
		} else
			return false;
	}

	public static void main(String[] args) {
		String day = null;
		String regexDay = "\\d{1}";
		ArrayList<String> countSunday = new ArrayList<>();

		DateFormat df = new SimpleDateFormat("u dd MM yyyy");
		DateFormat out = new SimpleDateFormat("dd MM yyyy");

		Date date = null;
		String outDate = null;

		int days = 0;
		for (int m = 1; m < 13; m++) {

			for (int y = 1901; y < 2001; y++) {
				// À ngon, vòng switch khá hay :3 :3, duyệt tháng theo m :D
				switch (m) {
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					days = 31;
					break;
				case 2:
					if (isLeapYear(y)) {
						days = 29;
					} else {
						days = 28;
					}
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					days = 30;
					break;

				default:
					break;
				}
				// He he, đến đây là lấy được ngày trong tháng :3 right?
				// TODO: Sẽ gọn hơn nếu tách ra thành 1 hàm :D đại khái kiểu
				// int numDayofMonth(int monthIndex, int yearIndex) :D :D
				for (int d = 1; d < days; d++) {
					// À vl :v trick, dùng kiểu dd mm yyyy để đưa ra cái DateTimeFormat :v
					// Rồi parse string ra cái ngày of week, chính là cái u :3 :3
					// THông minh vồn =))
					// TODO: Bếu tự làm hả :3 , nếu thế thì bài này rate 8.75 nhá
					// Nếu không thì cũng được :v vì ý tưởng, được 7.5 điểm, khá tốt :D
					day = Integer.toString(d) + " " + Integer.toString(m) + " "
							+ Integer.toString(y);

					if (d == 1) {

						try {
							date = out.parse(day);

							outDate = df.format(date);

							Pattern pattern = Pattern.compile(regexDay);
							String temp;
							Matcher matcher = pattern.matcher(outDate);

							if (matcher.find()) {
								temp = matcher.group();
								if (temp.equals("7")) {
									countSunday.add(temp);
								}
							}
						} catch (ParseException e) {
							e.printStackTrace();
						}

					}
				}
			}
		}

		System.out.println("COUNT: " + countSunday.size());
	}

}
